package com.jxauaia.contest.mapper;

import com.jxauaia.contest.model.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.*;
import java.util.List;

@Mapper
public interface UserMapper {
    
    // 查询方法
    User findByUsername(String username);
    
    User findByEmail(String email);
    
    User findById(Integer id);
    
    List<User> findAll();
    
    // 统计方法
    int countByUsername(String username);
    
    int countByEmail(String email);
    
    // 增删改方法
    int insert(User user);
    
    int update(User user);
    
    int updateUserProfile(User user);
    
    // 在UserMapper接口中添加或修改以下方法
    
    /**
     * 更新用户密码
     * @param userId 用户ID
     * @param password 新密码
     * @param updateTime 更新时间
     * @return 影响行数
     */
    int updatePassword(@Param("userId") Integer userId, @Param("password") String password, @Param("updateTime") Date updateTime);
    
    /**
     * 按条件搜索用户
     * @param params 查询参数
     * @return 用户列表
     */
    List<User> searchUsers(Map<String, Object> params);
    
    int updateStatus(@Param("id") Integer userId, @Param("status") Integer status, @Param("updatedTime") Date updatedTime);
    
    int disableUser(@Param("id") Integer userId, @Param("updatedTime") Date updatedTime);
    
    int deleteById(@Param("id") Integer userId);
    
    /**
     * 获取用户个人主页信息
     */
    User getUserPersonalPage(Integer userId);
    
    /**
     * 更新用户个人主页信息
     */
    int updateUserPersonalPage(User user);
}